package collection;
/*
* 集合的判断功能:
*  boolean contains(Object o):
*   判断集合中是否包含指定元素,如果有则返回true,没有则返回false
*   原理:底层会拿着要比较的元素和集合中的元素利用equals方法一一比较
*       对比过程中equals方法返回true=>则证明该集合包含要判定的元素=>contains方法返回true
*       对比过程中equals方法返回false=>则证明该集合不包含要判定的元素=>contains方法返回false
*  boolean isEmpty():
*   判断集合中是否元素,有则返回false,没有则返回true
*   原理:利用size()判断集合是否为空
*       如果size()==0,说明集合中没有元素,isEmpty返回true
*       如果size()!=0,说明集合中有元素,isEmpty返回false
*
*
* */
import java.util.ArrayList;
import java.util.Collection;


public class CollectionDemo02 {
    public static void main(String[] args) {
        //method01();
        //method02();
        //method03();
        //method04();
        //Person类重写了Object类中的equals方法
        Collection c = new ArrayList();
        Person p1 = new Person("wuji", 12);
        Person p2 = new Person("sjad", 14);
        c.add(p1);
        c.add(p2);
        Person p3 = new Person("wuji", 12);
        System.out.println(c.contains(p1));//true
        System.out.println(c.contains(p3));//true
        //如果在对比的过程中equals()方法返回true => 代表该集合包含要判定的元素 =>contains方法返回true
    }

    private static void method04() {
        //Person类未重写Object类中的equals方法
        Collection c = new ArrayList();
        Person p1 = new Person("wuji", 12);
        Person p2 = new Person("sjad", 14);
        c.add(p1);
        c.add(p2);
        Person p3 = new Person("wuji", 12);
        System.out.println(c.contains(p1));//true
        //1.p1.equals(p1)=>比较的是地址值=>地址值相同=>equals()方法返回true
        //对比过程中equals方法返回true=>则证明该集合包含要判定的元素=>contains方法返回true
        System.out.println(c.contains(p3));//false
        //1.p3.equals(p1)=>比较地址值=>地址值不同=>equals()方法返回false
        //2.p3.equals(p2)比较地址值=>地址值不同=>equals()方法返回false
        //对比过程中equals方法返回false=>则证明该集合不包含要判定的元素=>contains方法返回false
    }

    private static void method03() {
        Collection c = new ArrayList();
        Person p1 = new Person("wuji", 12);
        Person p2 = new Person("sjad", 14);
        c.add(p1);
        c.add(p2);
        System.out.println(c);//[collection.Person@2f4d3709, collection.Person@4e50df2e]
        //当打印集合时,集合会默认调用toString方法,里边的元素也会调用toString方法
    }

    private static void method02() {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("def");
        System.out.println(c.isEmpty());//false
        c.clear();
        System.out.println(c.isEmpty());//true
    }

    private static void method01() {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("def");
        System.out.println(c.contains("def"));//true
        System.out.println(c.contains("ghk"));//false
    }
}
